/**
 * 判断是否为空
 * @param val
 * @returns {boolean}
 */
function checkIsEmpty(val) {
    if (null !== val && '' !== val && undefined !== val && "null" !== val) {
        return false;
    } else {
        return true;
    }
}


/**
 * 正则验证
 * @param reg 正则表达式
 * @param obj
 * @param message 提示的内容
 * @param falg 是否验证空
 * @returns {boolean}
 */
function regCheck(reg, obj, msg, falg) {
    var val = $(obj).val();
    if (falg == false || falg == undefined) {
        if (!reg.test(val)) {
            DGG.Tip(checkIsEmpty(msg) ? '您输入的内容有误' : msg, obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            layer.closeAll("tips");
            return true;
        }
    } else {
        if (checkIsEmpty(val)) {
            DGG.Tip('输入内容不能为空', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            if (!reg.test(val)) {
                DGG.Tip(checkIsEmpty(msg) ? '您输入的内容有误' : msg, obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        }
    }


}

/**
 * 下拉框选择验证
 * @param obj
 * @param tipObj 标签提示位置 select2的下拉框传值参考$(obj).next()  不传默认obj
 * @param msg 提示信息 不传默认 '选择内容不能为空'
 */
function checkDropDownChoice(obj, tipObj, msg) {
    var value = $(obj).find("option:selected").val();//获取下拉列表选中值
    if (checkIsEmpty(value)) {
        DGG.Tip(checkIsEmpty(msg) ? '选择内容不能为空' : msg, checkIsEmpty(tipObj) ? obj : tipObj, {tips: [3, '#000'], time: 3000});
        return false;
    } else {
        layer.closeAll("tips");
        return true;
    }
}

/**
 * input输入框验证
 * @param obj
 * @param msg 提示信息 不传默认 '输入内容不能为空'
 */
function checkInputBox(obj, msg, tipObj) {
    //获取输入框值
    var value = $(obj).val();
    if (checkIsEmpty(value)) {
        DGG.Tip(checkIsEmpty(msg) ? '输入内容不能为空' : msg,  checkIsEmpty(tipObj) ? obj : tipObj, {tips: [3, '#000'], time: 3000});
        return false;
    } else {
        layer.closeAll("tips");
        return true;
    }
}

/**
 * 判断浮点型
 * @param obj
 * @param float 小数位数
 * @param falg  是否为空
 * @returns {boolean}
 */
function isFloat(obj, float, falg) {
    var objVal = $(obj).val(),
        objFlat = objVal.indexOf("."),
        isFloat = /^[-\+]?\d+(\.\d+)?$/;
    if (falg == false) {
        if (objVal == "" || objVal == null) {
            layer.closeAll("tips");
            return true;
        } else if (!isFloat.test(objVal)) {
            DGG.Tip('只能输入数字!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (float != undefined && objFlat > 0) {
            var flo = objVal.toString().split(".")[1].length
            if (flo > float) {
                DGG.Tip('只能输入小数位' + float + '位以内大于等于0的小数', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        } else {
            layer.closeAll("tips");
            return true;
        }
    } else {
        if (objVal == "" || objVal == null) {
            DGG.Tip('输入内容不能为空', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (!isFloat.test(objVal)) {
            DGG.Tip('只能输入数字!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (float != undefined && objFlat > 0) {
            var flo = objVal.toString().split(".")[1].length;
            if (flo > float) {
                DGG.Tip('只能输入小数位' + float + '位以内大于等于0的 小数', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        } else {
            layer.closeAll("tips");
            return true;
        }
    }

}

/**
 * 判断大于0的浮点型
 * @param obj
 * @param float 小数位数
 * @param falg  是否为空
 * @returns {boolean}
 */
function isFloatGteZero(obj, float, falg) {
    var objVal = $(obj).val(),
        objFlat = objVal.indexOf("."),
        isFloat = /^\d+(\.\d+)?$/;
    if (falg == false) {
        if (objVal == "" || objVal == null) {
            layer.closeAll("tips");
            return true;
        } else if (!isFloat.test(objVal)) {
            DGG.Tip('只能输入大于零的数字!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (float != undefined && objFlat > 0) {
            var flo = objVal.toString().split(".")[1].length
            if (flo > float) {
                DGG.Tip('只能输入小数位' + float + '位以内大于等于0的小数', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        } else {
            layer.closeAll("tips");
            return true;
        }
    } else {
        if (objVal == "" || objVal == null) {
            DGG.Tip('输入内容不能为空', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (!isFloat.test(objVal)) {
            DGG.Tip('只能输入大于零的数字!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (float != undefined && objFlat > 0) {
            var flo = objVal.toString().split(".")[1].length;
            if (flo > float) {
                DGG.Tip('只能输入小数位' + float + '位以内大于等于0的小数', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        } else {
            layer.closeAll("tips");
            return true;
        }
    }
}


/**
 * 手机号码验证
 * @param obj
 * @param falg 是否为空
 * @returns {boolean}
 */
function isMobile(obj, falg) {
    var objVal = $(obj).val(),
        MobileNum = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
    if (falg == false || falg == undefined) {
        if (objVal == "" || objVal == null) {
            layer.closeAll("tips");
            return true;
        } else {
            if (!MobileNum.test(objVal)) {
                DGG.Tip('请正确填写手机号码', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        }
    } else {
        if (objVal == "" || objVal == null) {
            DGG.Tip('输入内容不能为空', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            if (!MobileNum.test(objVal)) {
                DGG.Tip('请正确填写手机号码', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        }
    }
};

/**
 * 身份证号码
 * @param obj
 * @param falg 是否为空
 * @returns {boolean}
 */
function isIdCardNo(obj, falg) {
    var objVal = $(obj).val();
    var len = objVal.length,
        re;
    var base;
    base = function (obj) {
        if (len == 15) re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{2})(\w)$/);
        else if (len == 18) re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\w)$/);
        else {
            DGG.Tip('请输入正确身份证号码', obj, {tips: [3, '#000'], time: 3000});
            return false;
        }
        var a = objVal.match(re);
        if (a != null) {
            if (len == 15) {
                var D = new Date("19" + a[3] + "/" + a[4] + "/" + a[5]);
                var B = D.getYear() == a[3] && (D.getMonth() + 1) == a[4] && D.getDate() == a[5];
            }
            else {
                var D = new Date(a[3] + "/" + a[4] + "/" + a[5]);
                var B = D.getFullYear() == a[3] && (D.getMonth() + 1) == a[4] && D.getDate() == a[5];
            }
            if (!B) {
                DGG.Tip('您输入的身份证号出生日期不对', obj, {tips: [3, '#000'], time: 3000});
                return false;
            }
        }
        if (!re.test(objVal)) {
            DGG.Tip('请输入正确身份证号码', obj, {tips: [3, '#000'], time: 3000});
            return false;
        }
        if (re.test(objVal)) {
            layer.closeAll("tips");
            return true;
        }
    };
    if (falg == false || falg == undefined) {
        if (objVal == "" || objVal == null) {
            layer.closeAll("tips");
            return true;
        } else {
            return base(obj);
        }
    } else {
        if (objVal == "" || objVal == null) {
            DGG.Tip('输入内容不能为空', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            return base(obj);
        }
    }

};


//验证微信
function isWx(obj, falg) {
    var objVal = $(obj).val();
    var $obj = $(obj),
        //QQ
        reg1 = /^[1-9]\d{4,12}$/,
        //手机号
        reg2 = /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
        //微信
        reg3 = /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/,
        //微信号带字母的 6-20
        flag = reg1.test($obj.val()) || reg2.test($obj.val()) || reg3.test($obj.val());

    if (falg == false || falg == undefined) {
        if (objVal == "" || objVal == null) {
            layer.closeAll("tips");
            return true;
        } else {
            if (!flag) { //正则验证不通过，格式不对
                DGG.Tip('微信账号格式不正确', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        }
    } else {
        if (objVal == "" || objVal == null) {
            DGG.Tip('输入内容不能为空', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            if (!flag) { //正则验证不通过，格式不对
                DGG.Tip('微信账号格式不正确', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        }
    }
}

/**
 * 约束输入  只能是正整数
 * @param obj
 * @param length 长度
 * @param isZero 是否可用为0
 */
function restrictInputLength(obj, length, isZero) {
    var $obj = obj instanceof jQuery ? obj : $(obj);
    var val = $obj.val();
    if (val) {
        if (!val.replace(/[^\d]/g, '') || val.length > length) {
            DGG.Warning('只能输入' + length + "位的正整数!")
        }
        val = val.replace(/[^\d]/g, '').substr(0, length);
        if (val.length > 1 && val.substr(0, 1) == 0) {
            val = "";
            DGG.Warning('请规范你的输入!');
        }
        if (isZero) {
            if (val == 0) {
                DGG.Warning('只能输入大于0的正整数!');
                val = "";
            }
        }
    }
    $(obj).val(val);
}

/**
 * 约束输入  只能是正整数
 * @param obj
 * @param length 长度
 * @param isZero 是否可用为0
 */
function numCheck(obj, length, falg) {
    var objVal = $(obj).val();
    var Number = /^[0-9]\d*$/;
    if (falg == false || falg == undefined) {
        if (objVal == "" || objVal == null) {
            layer.closeAll("tips");
            return true;
        } else {
            if (!Number.test(objVal)) {
                DGG.Tip('只能输入' + length + '位的正整数!', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
        }
    } else {
        if (!Number.test(objVal) || objVal.length > length) {
            DGG.Tip('只能输入' + length + '位的正整数!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            layer.closeAll("tips");
            return true;
        }
    }
}


/**
 * 约束输入  只能是正整数
 * @param obj
 * @param length 长度
 */
function checkInputLength(obj, length) {
    var $obj = obj instanceof jQuery ? obj : $(obj);
    var val = $obj.val();
    if (val) {
        if (!val.replace(/[^\d]/g, '') || val.length > length) {
            DGG.Tip('只能输入' + length + '位的正整数!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        }
        val = val.replace(/[^\d]/g, '').substr(0, length);
        if (val.length > 1 && val.substr(0, 1) == 0) {
            DGG.Tip('只能输入' + length + '位的正整数!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        }
    } else {
        DGG.Tip('输入内容不能为空！', obj, {tips: [3, '#000'], time: 3000});
        return false;
    }
    return true;
}


/**
 * 判断  大于0 并且小于某个值 的浮点型
 * @param obj
 * @param float 小数位数 当传入 0 时验证整数
 * @param maxNum  最大值
 * @returns {boolean}
 */
function isFloatRangeSam(obj, float, maxNum) {
    var objVal = $(obj).val(),
        objFlat = objVal.indexOf("."),
        isFloat = /^(0|([1-9]\d*))(\.\d+)?$/;
    if (objVal === "" || objVal == null) {
        layer.closeAll("tips");
        return true;
    } else if (!isFloat.test(objVal)) {
        DGG.Tip('只能输入大于零的数字!', obj, {tips: [3, '#000'], time: 3000});
        return false;
    } else if (float === 0) {//这里表示验证整数
        if (objFlat !== -1) {
            DGG.Tip('只能输入整数!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (parseInt(objVal) > parseInt(maxNum)) {
            DGG.Tip('只能输入小于' + maxNum + '的整数!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            layer.closeAll("tips");
            return true;
        }
    } else if (float !== undefined && objFlat > 0) {
        var flo = objVal.toString().split(".")[1].length;
        if (flo > float) {
            DGG.Tip('只能输入小数位' + float + '位以内的小数!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (parseFloat(objVal) > parseFloat(maxNum)) {
            DGG.Tip('只能输入小于' + maxNum + '的数字!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else {
            layer.closeAll("tips");
            return true;
        }
    } else if (parseFloat(objVal) > parseFloat(maxNum)) {
        DGG.Tip('只能输入小于' + maxNum + '的数字!', obj, {tips: [3, '#000'], time: 3000});
        return false;
    } else {
        layer.closeAll("tips");
        return true;
    }

}


/**
 * 判断大于0的浮点型
 * @param obj
 * @param float 小数位数
 * @param falg  是否为空
 * @param length  整数位数
 * @returns {boolean}
 */
function isFloatGteZeroByLength(obj, float, falg, length) {
    var objVal = $(obj).val(),
        objFlat = objVal.indexOf("."),
        isFloat = /^\d+(\.\d+)?$/;
    if (falg == false) {
        if (objVal == "" || objVal == null) {
            layer.closeAll("tips");
            return true;
        } else if (!isFloat.test(objVal)) {
            DGG.Tip('只能输入大于零的数字!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (float != undefined) {
            var len = objVal.toString().split(".")[0].length;
            if (len > length) {
                DGG.Tip('整数位数需小于' + length + '位数', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
            if (objFlat > 0) {
                var flo = objVal.toString().split(".")[1].length
                if (flo > float) {
                    DGG.Tip('只能输入小数位' + float + '位以内大于等于0的小数', obj, {tips: [3, '#000'], time: 3000});
                    return false;
                } else {
                    layer.closeAll("tips");
                    return true;
                }
            }

        } else {
            layer.closeAll("tips");
            return true;
        }
    } else {
        if (objVal == "" || objVal == null) {
            DGG.Tip('输入内容不能为空', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (!isFloat.test(objVal)) {
            DGG.Tip('只能输入大于零的数字!', obj, {tips: [3, '#000'], time: 3000});
            return false;
        } else if (float != undefined) {
            var len = objVal.toString().split(".")[0].length;
            if (len > length) {
                DGG.Tip('整数位数需小于' + length + '位数', obj, {tips: [3, '#000'], time: 3000});
                return false;
            } else {
                layer.closeAll("tips");
                return true;
            }
            if (objFlat > 0) {
                var flo = objVal.toString().split(".")[1].length
                if (flo > float) {
                    DGG.Tip('只能输入小数位' + float + '位以内大于等于0的小数', obj, {tips: [3, '#000'], time: 3000});
                    return false;
                } else {
                    layer.closeAll("tips");
                    return true;
                }
            }

        } else {
            layer.closeAll("tips");
            return true;
        }
    }
}
